package com.briup.smartcity_group1.utils.result;

import com.briup.smartcity_group1.exception.ServiceException;

/**
 * 为了生成Result对象生成工具类
 * @Author lining
 * @Date 2022/12/26
 */
public class ResultUtils {

    private static String dataMessage = "";

    private ResultUtils() {}

    /** 返回消息存放在 data 字段中的 Result
     * 使用前需要调用 {@link Result#setDataMessage(String)} 设置 DataMessage
     * @param haveDataMessage   要返回的数据data有无消息
     * @return  data中有消息的Result
     */
    public static Result success(boolean haveDataMessage) {
        return new Result();
    }

    public static Result success(){//默认成功
        return new Result(ResultCode.SUCCESS);
    }
    public static Result success(Object data){
        return new Result(ResultCode.SUCCESS.getCode(),ResultCode.SUCCESS.getMsg(),data);
    }
    public static Result success(ResultCode code){
        return new Result(code.getCode(),code.getMsg());
    }


    //失败-----------

    /**
     * 不能给出确切的错误种类，不推荐使用，推荐使用 {@link #error(ResultCode)}
     * */
    @Deprecated
    public static Result error(){
        return new Result(ResultCode.ERROR);
    }

    /**
     * 不能给出确切的错误种类，不推荐使用，推荐使用 {@link #error(ResultCode)}
     * */
    @Deprecated
    public static Result error(Object data){
        return new Result(ResultCode.ERROR.getCode(),ResultCode.ERROR.getMsg(),data);
    }


    /**
     * 不能给出确切的错误种类，不推荐使用，推荐使用 {@link #error(ResultCode)}
    * */
    @Deprecated
    public static Result error(String msg){
        return new Result(ResultCode.ERROR.getCode(),msg);
    }

    public static Result error(ResultCode code){
        return new Result(code);
    }

    public static Result error(ServiceException se) {
        return new Result(se);
    }
}